/*
2021-8-8
https://www.acwing.com/problem/content/199/
*/ 
#include<cstring>
#include<iostream>
#include<algorithm>

using namespace std;
const int N=1e6+5;
int primes[N],cnt;
bool st[N];

void init(int n)
{
    for(int i=2;i<=n;i++)
    {
        if(!st[i]) primes[cnt++]=i;
        for(int j=0;primes[j]*i<=n;j++)
        {
            st[primes[j]*i]=true;
            if(i%primes[j] == 0 )break;
        }
    }
}

int main()
{
    int n;
    cin>>n;
    init(n);
    
    for(int i=0;i<cnt;i++)
    {
        int p=primes[i],s=0;
        for(int j=n;j;j/=p) s+=j/p;
        cout<<p<<' '<<s<<endl;
    }
    
    return 0;
}
